# Generated from pml.g4 by ANTLR 4.13.1
from antlr4 import *
from io import StringIO
import sys
if sys.version_info[1] > 5:
    from typing import TextIO
else:
    from typing.io import TextIO


def serializedATN():
    return [
        4,0,52,373,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,
        2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,
        13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,
        19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,
        26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,
        32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,
        39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,
        45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,1,
        0,1,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,2,1,2,1,2,1,
        2,1,2,1,2,1,2,1,2,1,3,1,3,1,3,1,3,1,4,1,4,1,4,1,4,1,4,1,4,1,5,1,
        5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,7,1,
        7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,
        8,1,8,1,8,1,8,1,8,1,8,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,
        9,1,9,1,9,1,9,1,9,1,9,1,10,1,10,1,10,1,11,1,11,1,11,1,11,1,11,1,
        11,1,11,1,11,1,11,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,
        12,1,12,1,12,1,12,1,13,1,13,1,13,1,13,1,14,1,14,1,14,1,14,1,14,1,
        15,1,15,1,15,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,17,1,17,1,
        17,1,17,1,17,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,19,1,20,1,20,1,
        20,1,21,1,21,1,21,1,21,1,22,1,22,1,22,1,22,1,23,1,23,1,23,1,24,1,
        24,5,24,266,8,24,10,24,12,24,269,9,24,1,25,1,25,1,25,1,25,5,25,275,
        8,25,10,25,12,25,278,9,25,1,25,1,25,1,26,1,26,4,26,284,8,26,11,26,
        12,26,285,1,27,3,27,289,8,27,1,27,1,27,3,27,293,8,27,1,27,3,27,296,
        8,27,1,28,1,28,1,28,5,28,301,8,28,10,28,12,28,304,9,28,1,29,4,29,
        307,8,29,11,29,12,29,308,1,30,1,30,1,31,1,31,1,32,1,32,1,33,1,33,
        1,34,1,34,1,35,1,35,1,36,1,36,1,37,1,37,1,38,1,38,1,39,1,39,1,40,
        1,40,1,41,1,41,1,42,1,42,1,43,1,43,1,44,1,44,1,45,1,45,1,46,1,46,
        1,46,1,47,1,47,1,48,1,48,1,48,1,49,1,49,1,49,1,50,1,50,1,50,1,50,
        5,50,358,8,50,10,50,12,50,361,9,50,1,50,1,50,1,50,1,50,1,51,4,51,
        368,8,51,11,51,12,51,369,1,51,1,51,1,359,0,52,1,1,3,2,5,3,7,4,9,
        5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16,
        33,17,35,18,37,19,39,20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,
        55,28,57,29,59,30,61,31,63,32,65,33,67,34,69,35,71,36,73,37,75,38,
        77,39,79,40,81,41,83,42,85,43,87,44,89,45,91,46,93,47,95,48,97,49,
        99,50,101,51,103,52,1,0,6,3,0,65,90,95,95,97,122,5,0,45,45,48,57,
        65,90,95,95,97,122,1,0,34,34,3,0,48,57,65,70,97,102,2,0,10,10,13,
        13,3,0,9,10,13,13,32,32,383,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,
        0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,
        17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,
        27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,
        37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,
        47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,
        57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,
        67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,
        77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,
        87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0,0,0,0,
        97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103,1,0,0,0,1,105,1,0,0,
        0,3,111,1,0,0,0,5,117,1,0,0,0,7,126,1,0,0,0,9,130,1,0,0,0,11,136,
        1,0,0,0,13,147,1,0,0,0,15,152,1,0,0,0,17,161,1,0,0,0,19,175,1,0,
        0,0,21,191,1,0,0,0,23,194,1,0,0,0,25,203,1,0,0,0,27,216,1,0,0,0,
        29,220,1,0,0,0,31,225,1,0,0,0,33,231,1,0,0,0,35,236,1,0,0,0,37,241,
        1,0,0,0,39,243,1,0,0,0,41,249,1,0,0,0,43,252,1,0,0,0,45,256,1,0,
        0,0,47,260,1,0,0,0,49,263,1,0,0,0,51,270,1,0,0,0,53,281,1,0,0,0,
        55,295,1,0,0,0,57,297,1,0,0,0,59,306,1,0,0,0,61,310,1,0,0,0,63,312,
        1,0,0,0,65,314,1,0,0,0,67,316,1,0,0,0,69,318,1,0,0,0,71,320,1,0,
        0,0,73,322,1,0,0,0,75,324,1,0,0,0,77,326,1,0,0,0,79,328,1,0,0,0,
        81,330,1,0,0,0,83,332,1,0,0,0,85,334,1,0,0,0,87,336,1,0,0,0,89,338,
        1,0,0,0,91,340,1,0,0,0,93,342,1,0,0,0,95,345,1,0,0,0,97,347,1,0,
        0,0,99,350,1,0,0,0,101,353,1,0,0,0,103,367,1,0,0,0,105,106,5,64,
        0,0,106,107,5,110,0,0,107,108,5,97,0,0,108,109,5,109,0,0,109,110,
        5,101,0,0,110,2,1,0,0,0,111,112,5,108,0,0,112,113,5,101,0,0,113,
        114,5,118,0,0,114,115,5,101,0,0,115,116,5,108,0,0,116,4,1,0,0,0,
        117,118,5,115,0,0,118,119,5,121,0,0,119,120,5,109,0,0,120,121,5,
        109,0,0,121,122,5,101,0,0,122,123,5,116,0,0,123,124,5,114,0,0,124,
        125,5,121,0,0,125,6,1,0,0,0,126,127,5,117,0,0,127,128,5,115,0,0,
        128,129,5,101,0,0,129,8,1,0,0,0,130,131,5,102,0,0,131,132,5,97,0,
        0,132,133,5,99,0,0,133,134,5,101,0,0,134,135,5,115,0,0,135,10,1,
        0,0,0,136,137,5,115,0,0,137,138,5,104,0,0,138,139,5,97,0,0,139,140,
        5,114,0,0,140,141,5,112,0,0,141,142,5,69,0,0,142,143,5,100,0,0,143,
        144,5,103,0,0,144,145,5,101,0,0,145,146,5,115,0,0,146,12,1,0,0,0,
        147,148,5,97,0,0,148,149,5,116,0,0,149,150,5,116,0,0,150,151,5,114,
        0,0,151,14,1,0,0,0,152,153,5,98,0,0,153,154,5,108,0,0,154,155,5,
        100,0,0,155,156,5,103,0,0,156,157,5,65,0,0,157,158,5,116,0,0,158,
        159,5,116,0,0,159,160,5,114,0,0,160,16,1,0,0,0,161,162,5,114,0,0,
        162,163,5,97,0,0,163,164,5,110,0,0,164,165,5,100,0,0,165,166,5,111,
        0,0,166,167,5,109,0,0,167,168,5,95,0,0,168,169,5,110,0,0,169,170,
        5,111,0,0,170,171,5,114,0,0,171,172,5,109,0,0,172,173,5,97,0,0,173,
        174,5,108,0,0,174,18,1,0,0,0,175,176,5,114,0,0,176,177,5,97,0,0,
        177,178,5,110,0,0,178,179,5,100,0,0,179,180,5,111,0,0,180,181,5,
        109,0,0,181,182,5,95,0,0,182,183,5,119,0,0,183,184,5,101,0,0,184,
        185,5,105,0,0,185,186,5,103,0,0,186,187,5,104,0,0,187,188,5,116,
        0,0,188,189,5,101,0,0,189,190,5,100,0,0,190,20,1,0,0,0,191,192,5,
        105,0,0,192,193,5,102,0,0,193,22,1,0,0,0,194,195,5,117,0,0,195,196,
        5,115,0,0,196,197,5,101,0,0,197,198,5,95,0,0,198,199,5,102,0,0,199,
        200,5,114,0,0,200,201,5,111,0,0,201,202,5,109,0,0,202,24,1,0,0,0,
        203,204,5,112,0,0,204,205,5,101,0,0,205,206,5,114,0,0,206,207,5,
        95,0,0,207,208,5,98,0,0,208,209,5,117,0,0,209,210,5,105,0,0,210,
        211,5,108,0,0,211,212,5,100,0,0,212,213,5,105,0,0,213,214,5,110,
        0,0,214,215,5,103,0,0,215,26,1,0,0,0,216,217,5,114,0,0,217,218,5,
        103,0,0,218,219,5,98,0,0,219,28,1,0,0,0,220,221,5,114,0,0,221,222,
        5,103,0,0,222,223,5,98,0,0,223,224,5,97,0,0,224,30,1,0,0,0,225,226,
        5,64,0,0,226,227,5,114,0,0,227,228,5,111,0,0,228,229,5,111,0,0,229,
        230,5,102,0,0,230,32,1,0,0,0,231,232,5,64,0,0,232,233,5,97,0,0,233,
        234,5,108,0,0,234,235,5,108,0,0,235,34,1,0,0,0,236,237,5,105,0,0,
        237,238,5,116,0,0,238,239,5,101,0,0,239,240,5,109,0,0,240,36,1,0,
        0,0,241,242,5,46,0,0,242,38,1,0,0,0,243,244,5,115,0,0,244,245,5,
        116,0,0,245,246,5,121,0,0,246,247,5,108,0,0,247,248,5,101,0,0,248,
        40,1,0,0,0,249,250,5,111,0,0,250,251,5,114,0,0,251,42,1,0,0,0,252,
        253,5,97,0,0,253,254,5,110,0,0,254,255,5,100,0,0,255,44,1,0,0,0,
        256,257,5,110,0,0,257,258,5,111,0,0,258,259,5,116,0,0,259,46,1,0,
        0,0,260,261,5,105,0,0,261,262,5,110,0,0,262,48,1,0,0,0,263,267,7,
        0,0,0,264,266,7,1,0,0,265,264,1,0,0,0,266,269,1,0,0,0,267,265,1,
        0,0,0,267,268,1,0,0,0,268,50,1,0,0,0,269,267,1,0,0,0,270,276,5,34,
        0,0,271,272,5,34,0,0,272,275,5,34,0,0,273,275,8,2,0,0,274,271,1,
        0,0,0,274,273,1,0,0,0,275,278,1,0,0,0,276,274,1,0,0,0,276,277,1,
        0,0,0,277,279,1,0,0,0,278,276,1,0,0,0,279,280,5,34,0,0,280,52,1,
        0,0,0,281,283,5,35,0,0,282,284,7,3,0,0,283,282,1,0,0,0,284,285,1,
        0,0,0,285,283,1,0,0,0,285,286,1,0,0,0,286,54,1,0,0,0,287,289,5,45,
        0,0,288,287,1,0,0,0,288,289,1,0,0,0,289,290,1,0,0,0,290,296,3,59,
        29,0,291,293,5,45,0,0,292,291,1,0,0,0,292,293,1,0,0,0,293,294,1,
        0,0,0,294,296,3,57,28,0,295,288,1,0,0,0,295,292,1,0,0,0,296,56,1,
        0,0,0,297,298,3,59,29,0,298,302,5,46,0,0,299,301,3,59,29,0,300,299,
        1,0,0,0,301,304,1,0,0,0,302,300,1,0,0,0,302,303,1,0,0,0,303,58,1,
        0,0,0,304,302,1,0,0,0,305,307,2,48,57,0,306,305,1,0,0,0,307,308,
        1,0,0,0,308,306,1,0,0,0,308,309,1,0,0,0,309,60,1,0,0,0,310,311,5,
        64,0,0,311,62,1,0,0,0,312,313,5,123,0,0,313,64,1,0,0,0,314,315,5,
        125,0,0,315,66,1,0,0,0,316,317,5,40,0,0,317,68,1,0,0,0,318,319,5,
        41,0,0,319,70,1,0,0,0,320,321,5,91,0,0,321,72,1,0,0,0,322,323,5,
        93,0,0,323,74,1,0,0,0,324,325,5,124,0,0,325,76,1,0,0,0,326,327,5,
        44,0,0,327,78,1,0,0,0,328,329,5,58,0,0,329,80,1,0,0,0,330,331,5,
        59,0,0,331,82,1,0,0,0,332,333,5,43,0,0,333,84,1,0,0,0,334,335,5,
        45,0,0,335,86,1,0,0,0,336,337,5,42,0,0,337,88,1,0,0,0,338,339,5,
        47,0,0,339,90,1,0,0,0,340,341,5,62,0,0,341,92,1,0,0,0,342,343,5,
        62,0,0,343,344,5,61,0,0,344,94,1,0,0,0,345,346,5,60,0,0,346,96,1,
        0,0,0,347,348,5,60,0,0,348,349,5,61,0,0,349,98,1,0,0,0,350,351,5,
        61,0,0,351,352,5,61,0,0,352,100,1,0,0,0,353,354,5,47,0,0,354,355,
        5,47,0,0,355,359,1,0,0,0,356,358,9,0,0,0,357,356,1,0,0,0,358,361,
        1,0,0,0,359,360,1,0,0,0,359,357,1,0,0,0,360,362,1,0,0,0,361,359,
        1,0,0,0,362,363,7,4,0,0,363,364,1,0,0,0,364,365,6,50,0,0,365,102,
        1,0,0,0,366,368,7,5,0,0,367,366,1,0,0,0,368,369,1,0,0,0,369,367,
        1,0,0,0,369,370,1,0,0,0,370,371,1,0,0,0,371,372,6,51,0,0,372,104,
        1,0,0,0,13,0,265,267,274,276,285,288,292,295,302,308,359,369,1,6,
        0,0
    ]

class pmlLexer(Lexer):

    atn = ATNDeserializer().deserialize(serializedATN())

    decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ]

    T__0 = 1
    T__1 = 2
    T__2 = 3
    T__3 = 4
    T__4 = 5
    T__5 = 6
    T__6 = 7
    T__7 = 8
    T__8 = 9
    T__9 = 10
    T__10 = 11
    T__11 = 12
    T__12 = 13
    T__13 = 14
    T__14 = 15
    T__15 = 16
    T__16 = 17
    T__17 = 18
    T__18 = 19
    T__19 = 20
    OR = 21
    AND = 22
    NOT = 23
    IN = 24
    IDENTIFIER = 25
    STRING_LITERAL = 26
    HEX_NUMBER = 27
    NUMBER = 28
    FLOAT = 29
    INT = 30
    STRUDEL = 31
    LCURLY = 32
    RCURLY = 33
    LPAREN = 34
    RPAREN = 35
    LBRACK = 36
    RBRACK = 37
    PIPE = 38
    COMMA = 39
    COLON = 40
    SEMI = 41
    PLUS = 42
    MINUS = 43
    TIMES = 44
    DIV = 45
    GT = 46
    GE = 47
    LT = 48
    LE = 49
    EQ = 50
    COMMENT = 51
    WS = 52

    channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ]

    modeNames = [ "DEFAULT_MODE" ]

    literalNames = [ "<INVALID>",
            "'@name'", "'level'", "'symmetry'", "'use'", "'faces'", "'sharpEdges'", 
            "'attr'", "'bldgAttr'", "'random_normal'", "'random_weighted'", 
            "'if'", "'use_from'", "'per_building'", "'rgb'", "'rgba'", "'@roof'", 
            "'@all'", "'item'", "'.'", "'style'", "'or'", "'and'", "'not'", 
            "'in'", "'@'", "'{'", "'}'", "'('", "')'", "'['", "']'", "'|'", 
            "','", "':'", "';'", "'+'", "'-'", "'*'", "'/'", "'>'", "'>='", 
            "'<'", "'<='", "'=='" ]

    symbolicNames = [ "<INVALID>",
            "OR", "AND", "NOT", "IN", "IDENTIFIER", "STRING_LITERAL", "HEX_NUMBER", 
            "NUMBER", "FLOAT", "INT", "STRUDEL", "LCURLY", "RCURLY", "LPAREN", 
            "RPAREN", "LBRACK", "RBRACK", "PIPE", "COMMA", "COLON", "SEMI", 
            "PLUS", "MINUS", "TIMES", "DIV", "GT", "GE", "LT", "LE", "EQ", 
            "COMMENT", "WS" ]

    ruleNames = [ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", 
                  "T__7", "T__8", "T__9", "T__10", "T__11", "T__12", "T__13", 
                  "T__14", "T__15", "T__16", "T__17", "T__18", "T__19", 
                  "OR", "AND", "NOT", "IN", "IDENTIFIER", "STRING_LITERAL", 
                  "HEX_NUMBER", "NUMBER", "FLOAT", "INT", "STRUDEL", "LCURLY", 
                  "RCURLY", "LPAREN", "RPAREN", "LBRACK", "RBRACK", "PIPE", 
                  "COMMA", "COLON", "SEMI", "PLUS", "MINUS", "TIMES", "DIV", 
                  "GT", "GE", "LT", "LE", "EQ", "COMMENT", "WS" ]

    grammarFileName = "pml.g4"

    def __init__(self, input=None, output:TextIO = sys.stdout):
        super().__init__(input, output)
        self.checkVersion("4.13.1")
        self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache())
        self._actions = None
        self._predicates = None


